#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 打开文件
FILE *file_open(const char *path, const char *mode);
// 关闭文件
int file_close(FILE **fp);

// 声明结构体
// 声明结构体
typedef struct Elenemt_data
{
    int id;         // 学号
    int sco;        // 成绩
} Elenemt_data;

Elenemt_data HQYJ[5] = 
{
    {.id = 1 , .sco = 99},
    {.id = 2 , .sco = 98},
    {.id = 3 , .sco = 97},
    {.id = 4 , .sco = 96},
    {.id = 5 , .sco = 95}
};

int main(int argc, char const *argv[])
{
    // 打开文件
    FILE * fp = file_open("hqyj.txt" , "r+");

    // 向文件写入 数据
    for (size_t i = 0; i < 5; i++)
    {
        fprintf( fp , "学号:%d\t成绩:%d\n" , HQYJ[i].id , HQYJ[i].sco );
    }

    // 关闭文件
    file_close(&fp);

    // 打开文件
    fp = file_open("hqyj.txt" , "r+");

    // 声明结构体
    Elenemt_data HQYJ_1[5];

    // 从文件中读取
    for (size_t i = 0; i < 5; i++)
    {
        fscanf( fp , "学号:%d\t成绩:%d\n" , &HQYJ_1[i].id , &HQYJ_1[i].sco );
    }

    // 打印到终端
    for (size_t i = 0; i < 5; i++)
    {
        fprintf( stdout , "学号:%d\t成绩:%d\n" , HQYJ_1[i].id , HQYJ_1[i].sco );
    }
    

    // 关闭文件
    file_close(&fp);
    return 0;
}




FILE *file_open(const char *path, const char *mode)
{
    FILE *fp = fopen(path, mode);
    if (NULL == fp)
    {
        printf("文件创建失败\n");
        exit(-1);    // 退出整个程序
    }
    return fp;
}

int file_close(FILE **fp)
{
    fclose(*fp);
    *fp = NULL;
}